package com.dyz.swordFingerOffer;

/**
 * @author: daiyizheng
 * @date: 2021/5/26 12:53
 * @description:
 */
public class ReplaceBlankSpace05 {
    public String replaceSpace(String s){
        if(s==null || s.length()==0){
            return "";
        }
        char [] arr = new char[s.length()*3];
        int size = 0;
        for(int i = 0; i<s.length();i++){
            if(s.charAt(i)==' '){
                arr[size++] = '%';
                arr[size++] = '2';
                arr[size++] =  '0';
            }else {
                arr[size++] = s.charAt(i);
            }
        }
        return new String(arr);
    }

    public String replaceSpace1(String s) {
        //返回空串，返回null提交失败，因为题目没有指明，故无伤大雅
        if(s == null || s.length() == 0) {return "";}
        StringBuilder sb = new StringBuilder();
        //String、StringBuffer和StringBuilder的区别
        //String类是不可变类，即一旦一个String对象被创建以后，包含在这个对象中的字符序列是不可改变的，直至这个对象被销毁。
        //StringBuffer对象则代表一个字符序列可变的字符串，当一个StringBuffer被创建以后，通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。
        //StringBuilder类也代表可变字符串对象。实际上，StringBuilder和StringBuffer基本相似，两个类的构造器和方法也基本相同。不同的是：StringBuffer是线程安全的，而StringBuilder则没有实现线程安全功能，所以性能略高。
        for(int i = 0; i<s.length();i++){
            if(s.charAt(i)==' '){
                sb.append("%20");
            }else {
                sb.append(s.charAt(i));
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        String s = "\"hello world\"";
        String s1 = new ReplaceBlankSpace05().replaceSpace(s);
        System.out.println(s1);
    }
}
